Omar E. Barrantes Sotela
Escuela de Ciencias Geográficas
2022-11-12
Se cargan los datos previamente guardados de accidentes de tránsito en Heredia. Recuerde cargar las librerías sf, sp y rgdal.
En spatstat, la función owin se utiliza para configurar la ventana de observación. Sin embargo, la función estándar toma las coordenadas de un rectángulo o de un polígono de una matriz, y por lo tanto puede ser un poco difícil de usar.
Afortunadamente, el paquete maptools proporciona una manera de transformar un SpatialPolygons en un objeto de la clase owin, usando la función como .owin (Nota: una función con el mismo nombre también está disponible en spatstat pero no funciona con SpatialPolygons, así que asegúrese de cargar la libreria maptools):
Ahora podemos usar la función ppp, en spatstat, para crear el objeto de patrón de puntos:
Una información crucial que necesitamos cuando tratamos con patrones de puntos es una definición cuantitativa de la distribución espacial, es decir, cuántos eventos tenemos en una ventana predefinida. El índice para definir esto es la Intensidad, que es el número promedio de eventos por unidad de área.
Podemos calcular la intensidad de la siguiente manera:
El numerador es el número de punto en el objeto ppp; mientras que el denominador es la suma de las áreas de todos los polígonos. En Heredia, la intensidad promedio de accidentes es de 59.737 por kilómetro cuadrado.
La intensidad puede ser constante a lo largo de la ventana de estudio, en ese caso, en cada metro cuadrado encontraríamos el mismo número de puntos, y el proceso sería uniforme o homogéneo. La mayoría de las veces, la intensidad no es constante y varía espacialmente a lo largo de la ventana del estudio, en ese caso el proceso no es homogéneo. Para procesos no homogéneos necesitamos una forma de determinar la cantidad de variación espacial de la intensidad.
Hay varias formas de tratar este problema, un ejemplo es el conteo de cuadrantes, donde el área se divide en rectángulos y se cuenta el número de eventos en cada uno de ellos:
Esta función es buena para ciertos conjuntos de datos, pero en este caso realmente no tiene sentido usar el recuento de cuadrantes, ya que las áreas que crea no tienen ningún significado en la realidad. Por ejemplo, sería mucho más valioso extraer el número de accidentes por distrito. Para hacer esto necesitamos usar un bucle e iterar a través de los polígonos:
Local.Intensidad <- data.frame(heredia=factor(),Number=numeric())
for(i in unique(heredia$distrito)){
sub.pol <- heredia[heredia$distrito==i,]
z=data.frame(cbind(x=acc.ppp$x, y= acc.ppp$y))
coordinates(z)<-c("x","y")
sub.ppp <- ppp(x=z$x, y=z$y,window=as.owin(sub.pol))
Local.Intensidad <- rbind(Local.Intensidad,
data.frame(heredia=factor(i,
levels=heredia$distrito),
Number=sub.ppp$n))
}Se establecen las frecuencias de los accidentes por distrito.
library(plotrix)
colorScale <- color.scale(Local.Intensidad[order(Local.Intensidad[,2]),2],
color.spec="rgb",
extremes=c("green","red"),alpha=0.8)
df_sorted <- Local.Intensidad %>% arrange(desc(Number))
p<-ggplot(data=df_sorted, aes(x=heredia, y=Number)) +
geom_col(aes(color = heredia), fill = "white")+
scale_fill_manual(colorScale) +
geom_text(aes(label = Number), vjust = -0.3) +
theme_minimal()Figura 2: Heredia: Frecuencia de accidentes de tránsito por distrito.
Otra forma en la que podemos determinar la distribución espacial de la intensidad es mediante el uso del suavizado del kernel (Diggle 1990; Berman 1986; Berman, Scientific, y Diggle 1989; Bivand, Pebesma, y Gómez-Rubio 2013). Dicho método calcula la intensidad de forma continua en toda el área de estudio. Para realizar este análisis en R necesitamos definir el ancho de banda de la estimación de densidad, que básicamente determina el área de influencia de la estimación. No hay una regla general para determinar el ancho de banda correcto.
En general, si h es demasiado pequeño, la estimación es demasiado ruidosa, mientras que si h es demasiado alta, la estimación puede pasar por alto elementos cruciales del patrón de puntos debido a exceso de suavisado (Scott 2009). En spatstat, las funciones bw.diggle, bw.ppl y bw.scott se pueden usar para estimar el ancho de banda según los métodos de diferencia. Podemos probar cómo funcionan con nuestro conjunto de datos utilizando el siguiente código:
Figura 3: Heredia: Densidad de accidentes de tránsito por distrito.
Figura 4: Heredia: Densidad de accidentes de tránsito por distrito.
Figura 5: Heredia: Densidad de accidentes de tránsito por distrito.
Figura 6: Heredia: Densidad de accidentes de tránsito por distrito.
Escuela de Ciencias Geográficas, UNA.